/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.proyecto.dal;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import com.proyecto.bl.Usuario;
import java.sql.CallableStatement;  
import java.sql.SQLException;  
import java.util.ArrayList;
import com.proyecto.bl.Usuario;


/**
 *
 * @author felipe
 */
public class UsuarioDao {
    
    DatabaseUtil data;

    public void buscar(Usuario usuario) throws Exception {
      
     Connection con = null;  
     CallableStatement stmt = null;  
     ResultSet rs = null;  
     
      try {  
            con = new DatabaseUtil().getConection();  
            stmt = con.prepareCall("{call consultar_usuario_id (?,?)}");  
            stmt.setString(1, usuario.getIdUsuario());
            stmt.setString(2, usuario.getPassword());
            rs = stmt.executeQuery();
            
            if(rs.next()){
            usuario.setIdUsuario(rs.getString(1));
            usuario.setCedula(rs.getString(2));
            usuario.setNombre(rs.getString(3));
            usuario.setApellido1(rs.getString(4));
            usuario.setApellido2(rs.getString(5));
            usuario.setSexo(rs.getBoolean(6));
            usuario.setPassword(rs.getString(7));   
            usuario.setDomicilio(rs.getString(8));
            usuario.setEmail(rs.getString(9));
            usuario.setTelefono(rs.getString(10));
            usuario.setEstado(rs.getInt(11));
	    usuario.setGrupo(rs.getString(12));  
            usuario.setPermisosPredeterminados(rs.getString(13));
            rs.close();

            }}
      
      catch (SQLException ex) {  
           throw new SQLException(ex);  
        }  
      finally{
          con.close();
          obtenerGrupo(usuario);
      }
   
    }
    
    public void actualizarUsuario(Usuario usuario) throws Exception {
      
     Connection con = null;  
     CallableStatement stmt = null;  
     
      try {  
            con = new DatabaseUtil().getConection();  
            stmt = con.prepareCall("{call actualizar_usuario (?,?,?,?,?,?,?,?,?,?,?,?,?)}");  
            stmt.setString(1, usuario.getIdUsuario());
            stmt.setString(2, usuario.getCedula());
            stmt.setString(3, usuario.getNombre());
            stmt.setString(4, usuario.getApellido1());
            stmt.setString(5, usuario.getApellido2());
            stmt.setBoolean(6, usuario.getSexo());
            stmt.setString(7, usuario.getPassword());
            stmt.setString(8, usuario.getDomicilio());
            stmt.setString(9, usuario.getEmail());
            stmt.setString(10, usuario.getTelefono());
            stmt.setInt(11, usuario.getEstado());

            stmt.setString(12, usuario.getGrupo());
            stmt.setString(13, usuario.getPermisosPredeterminados());
            stmt.execute();

            }
      
      catch (SQLException ex) {  
           throw new SQLException(ex);  
        }  
      finally{
          con.close();
      }
   
    }
    
   
    public void obtenerGrupo(Usuario usuario) throws Exception{
          
     Connection con = null;  
     CallableStatement stmt = null;  
     ResultSet rs = null;  
     
      try {  
            con = new DatabaseUtil().getConection();  
            stmt = con.prepareCall("{call consultar_grupo_id_usuario (?)}");  
            stmt.setString(1, usuario.getIdUsuario());
            rs = stmt.executeQuery();
            
            if(rs.next()){
            usuario.setGrupo(rs.getString(1));
            usuario.setTipoUsuario(rs.getString(6));
            rs.close();

            }}
      
      catch (SQLException ex) {  
           throw new SQLException(ex);  
        }  
      finally{
          con.close();
      }
    }
}
